package constant.milk.periodapp.database;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class DbCreateQuery
{
	private SQLiteDatabase db;
	
	public DbCreateQuery(SQLiteDatabase db)
	{
		this.db = db;
	}
	
	/**
	 * 생리일 테이블
	 * @return
	 */
	public boolean createPeriodDateTable()
	{
		String sql = "CREATE TABLE " + TableName.PERIOD_DATE + " (" +
						"id integer PRIMARY KEY autoincrement," +
						"year integer NOT NULL DEFAULT 0," + // 년
						"month integer NOT NULL DEFAULT 0," + // 월
						"day integer NOT NULL DEFAULT 0," + // 일
						"date integer NOT NULL DEFAULT 0," + // 날짜
						"term integer NOT NULL DEFAULT 0);"; // 생리기간

		if (!isTable(db, TableName.PERIOD_DATE))
		{
			db.execSQL(sql);
			
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * 관계일 테이블
	 * @return
	 */
	public boolean createSexDateTable()
	{
		String sql = "CREATE TABLE " + TableName.SEX_DATE + " (" +
						"id integer PRIMARY KEY autoincrement," +
						"year integer NOT NULL DEFAULT 0," + // 년
						"month integer NOT NULL DEFAULT 0," + // 월
						"day integer NOT NULL DEFAULT 0);"; // 일

		if (!isTable(db, TableName.SEX_DATE))
		{
			db.execSQL(sql);
			
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * 메모 테이블
	 * @return
	 */
	public boolean createMemoTable()
	{
		String sql = "CREATE TABLE " + TableName.MEMO + " (" +
						"id integer PRIMARY KEY autoincrement," +
						"memo text NOT NULL DEFAULT ''," + // 내용
						"year integer NOT NULL DEFAULT 0," + // 년
						"month integer NOT NULL DEFAULT 0," + // 월
						"day integer NOT NULL DEFAULT 0);"; // 일

		if (!isTable(db, TableName.MEMO))
		{
			db.execSQL(sql);
			
			return true;
		}
		else
		{
			return false;
		}
	}
	
	/**
	 * 테이블이 있는지 없는지 확인한다.
	 * @param db
	 * @param tableName
	 * @return
	 */
	private boolean isTable(SQLiteDatabase db, String tableName)
	{
		String query = "SELECT tbl_name FROM sqlite_master WHERE tbl_name = '" + tableName + "'";
		Cursor c;
		try
		{
			c = db.rawQuery(query, null);
		} catch (Exception e)
		{
			return false;
		}
		
		if (c.getCount() > 0)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
